//
// Created by Administrator on 2021/11/26.
//

#ifndef SPLATTING_SPLATTING_H
#define SPLATTING_SPLATTING_H

#include <cmath>
#include "Utils.h"

// 定义重构核大小
const int DIAMETER = 5;

class Splatting {
    float table[DIAMETER][DIAMETER]{};
    float value[512][512]{};

    RawData *rawData;

    /**
     * 生成重构核
     * @param diameter 重构核长宽
     */
    void foot_print(int diameter);

public:
    explicit Splatting(RawData *rawData);

    float *get_table() {
        return reinterpret_cast<float *>(table);
    }

    float *get_value() {
        return reinterpret_cast<float *>(value);
    }

    void reset_value();

    void exec(int i);
};


#endif //SPLATTING_SPLATTING_H
